From 941212afe4b673dccc4cb68ee4a0849b258ed297 Mon Sep 17 00:00:00 2001 From: Isaku Yamahata Date: Tue, 22 Jul 2008 12:15:02 +0900 Subject: [PATCH] [IA64] kexec: Add a wrapper to vmx_switch_rr7() Add a C wrapper around the assembly vmx_switch_rr7(). This will be filled out with code that saves inserted TLB values by subsequent patches. Cc: Isaku Yamahata Signed-off-by: Simon Horman --- xen/arch/ia64/vmx/vmx_entry.S | 5 ++--- xen/arch/ia64/vmx/vmx_vcpu.c | 6 ++++++ xen/include/asm-ia64/vmx_vcpu.h | 5 ++++- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/xen/arch/ia64/vmx/vmx_entry.S b/xen/arch/ia64/vmx/vmx_entry.S index c2fcf9d304..053c324065 100644 --- a/xen/arch/ia64/vmx/vmx_entry.S +++ b/xen/arch/ia64/vmx/vmx_entry.S @@ -608,8 +608,7 @@ END(ia64_leave_hypercall) IA64_PSR_ED | IA64_PSR_DFL | IA64_PSR_DFH | IA64_PSR_IC) #define PSR_BITS_TO_SET IA64_PSR_BN -//extern void vmx_switch_rr7(unsigned long rid, void *guest_vhpt, void * pal_vaddr, void * shared_arch_info ); -GLOBAL_ENTRY(vmx_switch_rr7) +GLOBAL_ENTRY(__vmx_switch_rr7) // not sure this unwind statement is correct... .prologue ASM_UNW_PRLG_RP|ASM_UNW_PRLG_PFS, ASM_UNW_PRLG_GRSAVE(1) alloc loc1 = ar.pfs, 4, 8, 0, 0 @@ -777,4 +776,4 @@ GLOBAL_ENTRY(vmx_switch_rr7) mov ar.rsc=loc3 // restore RSE configuration srlz.d // seralize restoration of psr.l br.ret.sptk.many rp -END(vmx_switch_rr7) +END(__vmx_switch_rr7) diff --git a/xen/arch/ia64/vmx/vmx_vcpu.c b/xen/arch/ia64/vmx/vmx_vcpu.c index b4f2701b45..93e31fe621 100644 --- a/xen/arch/ia64/vmx/vmx_vcpu.c +++ b/xen/arch/ia64/vmx/vmx_vcpu.c @@ -196,6 +196,12 @@ void vmx_vcpu_set_rr_fast(VCPU *vcpu, u64 reg, u64 val) } } +void vmx_switch_rr7(unsigned long rid, void *guest_vhpt, + void *pal_vaddr, void *shared_arch_info) +{ + __vmx_switch_rr7(rid, guest_vhpt, pal_vaddr, shared_arch_info); +} + IA64FAULT vmx_vcpu_set_rr(VCPU *vcpu, u64 reg, u64 val) { u64 rrval; diff --git a/xen/include/asm-ia64/vmx_vcpu.h b/xen/include/asm-ia64/vmx_vcpu.h index 1cbd4825b1..21c729f2bf 100644 --- a/xen/include/asm-ia64/vmx_vcpu.h +++ b/xen/include/asm-ia64/vmx_vcpu.h @@ -103,7 +103,10 @@ extern int is_unmasked_irq(VCPU * vcpu); extern uint64_t guest_read_vivr(VCPU * vcpu); extern int vmx_vcpu_pend_interrupt(VCPU * vcpu, uint8_t vector); extern void vcpu_load_kernel_regs(VCPU * vcpu); -extern void vmx_switch_rr7(unsigned long, void *, void *, void *); +extern void __vmx_switch_rr7(unsigned long rid, void *guest_vhpt, + void *pal_vaddr, void *shared_arch_info); +extern void vmx_switch_rr7(unsigned long rid, void *guest_vhpt, + void *pal_vaddr, void *shared_arch_info); extern void vmx_ia64_set_dcr(VCPU * v); extern void inject_guest_interruption(struct vcpu *vcpu, u64 vec); extern void vmx_asm_bsw0(void); -- 2.30.2